home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / tcxl551.arc / TCXL_INC.EXE / lha / INC / TCXLMEM.H < prev    next >
Text File  |  1990-10-01  |  11KB  |  198 lines

  1. /*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
  2.  | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
  3.  |
  4.  | This Library is part of IDC's TesSeRact Development Tools product
  5.  | line. For information about other IDC products, call 1-215-884-3373.
  6.  *----------------------------------------------------------------------*
  7.  | <TCXLmem.h> : Definitions and prototypes for TCXL memory subsystem.
  8.  *-------------------------------[ Notes ]------------------------------*
  9.  | 1) Refer to the EMS, XMS, VCPI and DPMI specifications for further
  10.  |    information.
  11.  | 2) All pointers used by these functions are FAR pointers.
  12.  *----------------------------------------------------------------------*
  13.  | PGS : $Id: tcxlmem.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
  14.  | $Log:    tcxlmem.h $
  15.  | Revision 5.51  90/10/01  00:00:00  MLM
  16.  | TCXL 5.51
  17.  | 
  18.  *======================================================================*/
  19. #ifndef  _TCXLmem_
  20. #  define   _TCXLmem_   1
  21. #  ifndef   _TCXLdef_
  22. #     include  <TCXLdef.h>
  23. #  endif
  24.                               /*- Memory-flag bits ---------------------*/
  25. #define  MEM_DPMI    0x01     /* DPMI installed */
  26. #define  MEM_VCPI    0x02     /* VCPI installed */
  27. #define  MEM_EMS     0x04     /* EMS installed  */
  28. #define  MEM_XMS     0x08     /* XMS installed  */
  29. #define  MEM_HMA     0x10     /* HMA installed  */
  30.  
  31. #define  EMS_BadSoft    0x80  /*- EMS error-codes ----------------------*/
  32. #define  EMS_BadHdw     0x81  /* NOTE: Error-codes above 0x8F are for   */
  33. #define  EMS_Busy       0x82  /* EMS 4.0 functions only and are not     */
  34. #define  EMS_BadHandle  0x83  /* supported by this library. See the EMS */
  35. #define  EMS_BadFun     0x84  /* spec for further info.                 */
  36. #define  EMS_NoHandles  0x85  /*----------------------------------------*/
  37. #define  EMS_MapErr     0x86
  38. #define  EMS_NotTotal   0x87
  39. #define  EMS_NotFree    0x88
  40. #define  EMS_NotZero    0x89
  41. #define  EMS_BadPage    0x8A
  42. #define  EMS_BadPhys    0x8B
  43. #define  EMS_SaveFull   0x8C
  44. #define  EMS_SaveDup    0x8D
  45. #define  EMS_NoSave     0x8E
  46. #define  EMS_BadSub     0x8F
  47.  
  48. #define  XMS_BadFun     0x80  /*- XMS error-codes ----------------------*/
  49. #define  XMS_Vdisk      0x81  /* see the XMS spec for further info.     */
  50. #define  XMS_A20Err     0x82  /*----------------------------------------*/
  51. #define  XMS_DrivErr    0x8E
  52. #define  XMS_Fatal      0x8F
  53. #define  XMS_NoHMA      0x90
  54. #define  XMS_HMABusy    0x91
  55. #define  XMS_HMASmall   0x92
  56. #define  XMS_HMAFree    0x93
  57. #define  XMS_NoXMS      0xA0
  58. #define  XMS_NoHandle   0xA1
  59. #define  XMS_BadHandle  0xA2
  60. #define  XMS_BadSrc     0xA3
  61. #define  XMS_BadSOff    0xA4
  62. #define  XMS_BadDst     0xA5
  63. #define  XMS_BadDOff    0xA6
  64. #define  XMS_BadLen     0xA7
  65. #define  XMS_BadOver    0xA8
  66. #define  XMS_Parity     0xA9
  67. #define  XMS_NotLock    0xAA
  68. #define  XMS_IsLock     0xAB
  69. #define  XMS_LockOvr    0xAC
  70. #define  XMS_LockFail   0xAD
  71. #define  XMS_SmallUMB   0xB0
  72. #define  XMS_NoUMB      0xB1
  73. #define  XMS_BadUMBSeg  0xB2
  74.  
  75. /*------------------[ Data objects and access macros ]------------------*/
  76.  
  77. TYP   DwdT     _AdrT;                  /* 32-bit addresses */
  78. TYP   IntT     _HdlT;                  /* EMS/XMS handles */
  79. TYP   struct   _Mem  _MemT;
  80. TYP   WrdT     _SegT, FAR  *_SegFP;    /* segment addresses */
  81. TYP   struct   _Xms  _XmsT, FAR *_XmsFP;
  82.  
  83. struct _Mem             /* -[ Memory-control object ]----*/
  84. {  BytT  mMflg;         /* 00|00 : Memory flags          */
  85.    BytT  mDpro;         /* 01|01 : DPMI Processor        */
  86.    WrdT  mDflg;         /* 02|02 : DPMI Flags            */
  87.    DwdT  mDent;         /* 04|04 : DPMI entry point      */
  88.    WrdT  mDver;         /* 08|08 : DPMI version          */
  89.    WrdT  mVver;         /* 0A|0A : VCPI Version          */
  90.    WrdT  mEseg;         /* 0C|0C : EMS Base Segment      */
  91.    WrdT  mEver;         /* 0E|0E : EMS Version           */
  92.    WrdT  mEfre;         /* 10|10 : EMS Free (16kb page)  */
  93.    WrdT  mEtot;         /* 12|12 : EMS Total (16kb page) */
  94.    BytT  mEerr;         /* 14|14 : EMS Error Code        */
  95.    BytT  mXerr;         /* 15|15 : XMS Error Code        */
  96.    WrdT  mXver;         /* 16|16 : XMS Version           */
  97.    DwdT  mXent;         /* 18|18 : XMS Entry Point       */
  98.    WrdT  mXint;         /* 1C|1C : XMS Internal Version  */
  99.    WrdT  mHfre;         /* 1E|1E : HMA free (para)       */
  100.    WrdT  mXtot;         /* 20|20 : XMS total free (1k)   */
  101.    WrdT  mXlrg;         /* 22|22 : XMS largest free (1k) */
  102.    WrdT  mUfre;         /* 24|24 : Largest available UMB */
  103. };                      /* 26|26 ]-----------------------*/
  104.  
  105. GBL   _MemT CDC   _MemCtl;    /*- global memory-control object ---------*/
  106. #define  MemMflg  (_MemCtl.mMflg)               /* Memory Flags         */
  107. #define  MemDPMI  (0 != (MemMflg & MEM_DPMI))   /*    DPMI installed    */
  108. #define  MemVCPI  (0 != (MemMflg & MEM_VCPI))   /*    VCPI installed    */
  109. #define  MemEMS   (0 != (MemMflg & MEM_EMS))    /*    EMS installed     */
  110. #define  MemXMS   (0 != (MemMflg & MEM_XMS))    /*    XMS installed     */
  111. #define  MemHMA   (0 != (MemMflg & MEM_HMA))    /*    HMA installed     */
  112. #define  MemDpro   (_MemCtl.mDpro)              /* DPMI Processor       */
  113. #define  MemD286  (0x02 == MemDpro)             /*    286               */
  114. #define  MemD386  (0x03 == MemDpro)             /*    386               */
  115. #define  MemD486  (0x04 == MemDpro)             /*    486               */
  116. #define  MemDflg  (_MemCtl.mDflg)               /* DPMI Flags           */
  117. #define  MemDf32  (1 = MemDflg)                 /*    32 Bit Support    */
  118. #define  MemDent  (_MemCtl.mDent)               /* DPMI entry point     */
  119. #define  MemDver  (_MemCtl.mDver)               /* DPMI version         */
  120. #define  MemVver  (_MemCtl.mVver)               /* VCPI Version         */
  121. #define  MemEseg  (_MemCtl.mEseg)               /* EMS Base Segment     */
  122. #define  MemEver  (_MemCtl.mEver)               /* EMS Version          */
  123. #define  MemEfre  (_MemCtl.mEfre)               /* EMS Free (16k page)  */
  124. #define  MemEtot  (_MemCtl.mEtot)               /* EMS Total (16k page) */
  125. #define  MemEerr  (_MemCtl.mEerr)               /* EMS Error Code       */
  126. #define  MemXerr  (_MemCtl.mXerr)               /* XMS Error Code       */
  127. #define  MemXver  (_MemCtl.mXver)               /* XMS Version          */
  128. #define  MemXent  (_MemCtl.mXent)               /* XMS Entry Point      */
  129. #define  MemXint  (_MemCtl.mXint)               /* XMS Internal Version */
  130. #define  MemHfre  (_MemCtl.mHfre)               /* HMA free (para)      */
  131. #define  MemXtot  (_MemCtl.mXtot)               /* XMS total free (1k)  */
  132. #define  MemXlrg  (_MemCtl.mXlrg)               /* XMS largest free (1k)*/
  133. #define  MemUfre  (_MemCtl.mUfre)               /* Largest free UMB     */
  134.  
  135. struct   _Xms           /*-[ XMS Move Struct ]-----*/
  136. {  DwdT     xSlen;      /* 00|00 : Length          */
  137.    _HdlT    xShdl;      /* 04|04 : Source handle   */
  138.    _AdrT    xSptr;      /* 06|06 : Source pointer  */
  139.    _HdlT    xTdhl;      /* 0A|0A : Target handle   */
  140.    _AdrT    xTptr;      /* 0C|0C : Target pointer  */
  141. };                      /* 10|10 ]-----------------*/
  142. #define  XmsSlen(x)  ((x)->xSlen)
  143. #define  XmsShdl(x)  ((x)->xShdl)
  144. #define  XmsSptr(x)  ((x)->xSptr)
  145. #define  XmsTdhl(x)  ((x)->xTdhl)
  146. #define  XmsTptr(x)  ((x)->xTptr)
  147.  
  148. /*------------------------[ Function Prototypes ]-----------------------*/
  149. #ifdef   __cplusplus
  150.    extern   "C"   {
  151. #endif
  152.                                        /*- EMS functions ---------------*/
  153. _HdlT PAS   EMSalloc(IntT np);         /* allocate pages                */
  154. IntT  PAS   EMSfree(_HdlT eh);         /* free handle's pages           */
  155. ChrFP PAS   EMSgetnam(_HdlT eh,        /* get handle name               */
  156.    ChrFP np);
  157. IntT  PAS   EMScount(NOARG);           /* get handle count              */
  158. IntT  PAS   EMSpages(_HdlT eh);        /* get handle's page count       */
  159. IntT  PAS   EMSmap(_HdlT eh, IntT pp,  /* map physical to logical pages */
  160.    IntT lp);
  161. IntT  PAS   EMSquery(NOARG);           /* get free page count           */
  162. IntT  PAS   EMSrest(_HdlT eh);         /* restore pages                 */
  163. IntT  PAS   EMSsave(_HdlT eh);         /* save pages                    */
  164. IntT  PAS   EMSsetnam(_HdlT eh,        /* set handle name               */
  165.    ChrFP np);
  166. IntT  PAS   EMSstat(NOARG);            /* get EMS status                */
  167.                                        /*- UMB functions ---------------*/
  168. IntT  PAS   UMBalloc(WrdT np,          /* allocate <np> para UMB        */
  169.    _SegFP ps);
  170. IntT  PAS   UMBfree(_SegT ps);         /* free UMB                      */
  171.                                        /*- Memory system ---------------*/
  172. VOID  PAS   MemInit(NOARG);            /* initialize                    */
  173. VOID        MemTerm(NOARG);            /* terminate                     */
  174.                                        /*- XMS A20-line functions ------*/
  175. IntT  PAS   _A20_LD(NOARG);            /* local disable                 */
  176. IntT  PAS   _A20_LE(NOARG);            /* local enable                  */
  177. IntT  PAS   _A20chk(NOARG);            /* check status                  */
  178. IntT  PAS   _A20dis(NOARG);            /* global disable                */
  179. IntT  PAS   _A20ena(NOARG);            /* global enable                 */
  180.                                        /*- XMS HMA functions -----------*/
  181. IntT  PAS   HMAalloc(NOARG);           /* allocate                      */
  182. IntT  PAS   HMAfree(NOARG);            /* free                          */
  183.                                        /*- XMS functions ---------------*/
  184. _HdlT PAS   XMSalloc(WrdT nk);         /* allocate <nk> kb              */
  185. IntT  PAS   XMScopy(_XmsFP xp);        /* copy/move                     */
  186. IntT  PAS   XMSfree(_HdlT xh);         /* free                          */
  187. IntT  PAS   XMSavail(NOARG);           /* get available kb              */
  188. IntT  PAS   XMSquery(_HdlT xh);        /* query handle                  */
  189. _AdrT PAS   XMSlock(_HdlT xh);         /* lock handle                   */
  190. IntT  PAS   XMSrealloc(_HdlT xh,       /* reallocate                    */
  191.    WrdT ns);
  192. IntT  PAS   XMSunlock(_HdlT xh);       /* unlock handle                 */
  193. #  define   MemTerm()
  194. #ifdef   __cplusplus
  195.    }
  196. #endif
  197. #endif   /* _TCXLmem_ : End of <TCXLmem.h> */
  198.